LW2000

 

Nombre:      Silver (Plugin para PhotoShop)

Versión:       genérica

Editor:         SansWater

Víctima:       SILVER-100.8BF

Herramientas:       W32Dasm

                            HIEW

                            Cerebro

Cracker:                LW2000

Tutorial:                número 41

URL:                      http://www.sandwater.com/download.html

 

Renuncia: Este tutorial tiene una finalidad únicamente educativa. No asumo ninguna responsabilidad por el mal uso de éste material.

 

1.     Bien, arrancamos PhotoShop e intentamos registrar el plugin Silver. Bien, todo funciona estupendamente. Cerramos PhotoShop y ponemos la fecha del sistema un mes avanzada.

2.     Bien, arrancamos nuevamente PhotoShop y probamos el plugin Silver. ¡Boooom! “Trial has expired!” ¡Hmmm! Parece que hemos encontrado un error … ¡Vamos a arreglarlo!

3.     Cargamos “SILVER-100.9BF” en W32Dasm. Hacemos click en las ‘String Data References’. Ahora deberíamos ver esto:

 

NO_THANKS1, CONTROL_ID:0063, "A valid code was not entered."

REG_TIMEOUT, CONTROL_ID:0064, "- Pay by mail to Kagi, 1442-A Walnut Str"

REG_TIMEOUT, CONTROL_ID:0065, "Payment is accepted through Kagi, a fee "

REGISTER1, CONTROL_ID:0003, ""

 

4.     Bien, cerramos ésta ventana y vamos a “REG_TIMEOUT” en las ‘String Data References’:

 

* Possible StringData Ref from Data Obj ->"REG_TIMEOUT"

|

:1000D0A5 6844D10110       push 1001D144

:1000D0AA E88190FFFF       call 10006130

:1000D0AF 56               push esi

:1000D0B0 E8ABFBFFFF       call 1000CC60

:1000D0B5 8B0E             mov ecx, dword ptr [esi]

:1000D0B7 83C418           add esp, 00000018

:1000D0BA 66C7010100       mov word ptr [ecx], 0001

 

5.     ¡Hmmm! Nos desplazamos hacia arriba:

 

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:1000D054(C)     >Vamos aqui

|

 

* Possible StringData Ref from Data Obj ->"The price is US$20."

|

:1000D08C 685CD10110      push 1001D15C

 

* Possible StringData Ref from Data Obj ->"Silver"

                                  |

:1000D091 6818D10110      push 1001D118

 

* Possible StringData Ref from Data Obj ->"two weeks"

                                  |

:1000D096 6850D10110      push 1001D150

 

* Possible StringData Ref from Data Obj ->"Silver"

                                  |

:1000D09B 6818D10110      push 1001D118

:1000D0A0 E87B8AFFFF      call 10005B20

 

* Possible StringData Ref from Data Obj ->"REG_TIMEOUT"

 

6.     Bien, vamos a la posición ‘1000D054’ ya que es desde ahí desde donde se llama a REG_TIMEOUT:

 

:1000D054 7D36            jge 1000D08C  >¡Bad Boy!

:1000D056 8B54240C        mov edx, dword ptr [esp+0C]

:1000D05A 56              push esi

:1000D05B 81C2807FF1FF    add edx, FFF17F80

:1000D061 899054010000    mov dword ptr [eax+00000154], edx

:1000D067 8B4604          mov eax, dword ptr [esi+04]

:1000D06A 8B500C          mov edx, dword ptr [eax+0C]

:1000D06D 8B02            mov eax, dword ptr [edx]

:1000D06F 89884C010000    mov dword ptr [eax+0000014C], ecx

:1000D075 E80661FFFF      call 10003180

 

7.     Bien, hemos encontrado la primera comprobación, vamos a cargárnosla. Anotamos el offset (‘D054’) y abrimos HIEW y entonces cambiamos el ‘7336’ a ‘9090’ (dos instrucciones ‘NOP’). Guardamos nuestro trabajo y probamos el plugin.

8.     ¡Boooom! Aparece una messageBox que nos dice que tenemos una nueva versión y por consiguiente obtenermos un nuevo período ‘Trial’. ¡Una semana más! Si no le aparece ésa messageBox símplemente ponga la fecha del sistema un mesa adelante (¿por qué un mes y no una semana?).

9.     Vamos a echar otro vistazo. Abrimo el fichero con W32Dasm y observamos las ‘String Data References’. La cadena “Version Alert” suena muy interesante. Vamos allá:

 

* Possible StringData Ref from Data Obj ->"VERSION_ALERT"

|

:1000D07A 6870D10110   push 1001D170

:1000D07F E8AC90FFFF   call 10006130     >Establece el ‘Trial period’

>y el mensaje

:1000D084 83C408       add esp, 00000008

:1000D087 5F           pop edi

:1000D088 5E           pop esi

:1000D089 5B           pop ebx

:1000D08A 59           pop ecx

:1000D08B C3           ret

 

10.  ¡Hmmm! ¿Qué tenemos que hacer ahora? Símplemente poner a ‘NOPs’ la instrucción ‘CALL’. Con lo cual cada vez que se ejecute éste engendro tendremos una semana más de ‘trial period’ y de éste modo no expirará nunca.

11.  Vamos a hacerlo. Abrimos HIEW, cargamos el fichero y vamos al offset (‘D07F’) e introducimos cinco instrucciones ‘NOP’:

 

E8AC90FFF -> 9090909090

 

12.  Guardamos nuestro trabajo y lo probamos nuevamente.

 

¡Enhorabuena! ¡Ya es usted un usuario registrado!

 

¡Se acabó! Fácil, ¿no? ¿Algún comentario? Envíeme un email a LW2000@gmx.net. o vaya a http://www.LW2000.cjb.net

 

Gracias a tKC por sus tutoriales. Empecé leyendo su primer tutorial y todavía sigo leyéndolos.

 

Traducción de: MeGaBiTe